package g

/*
 * @lc app=leetcode.cn id=144 lang=golang
 *
 * [144] 二叉树的前序遍历
 */

// @lc code=start
/**
 * Definition for a binary tree node.
 * type TreeNode struct {
 *     Val int
 *     Left *TreeNode
 *     Right *TreeNode
 * }
 */
//          1
//         / \
//        2   3
//       / \
//      4   5
//     /     \
//    6       8
//     \       \
//      7       9
// return []int{1,2,4,6,7,5,8,9,3}
func preorderTraversal(root *TreeNode) []int {
	var ret []int
	if root != nil {
		ret = append(ret, root.Val)
		if root.Left != nil {
			ret = append(ret, preorderTraversal(root.Left)...)
		}
		if root.Right != nil {
			ret = append(ret, preorderTraversal(root.Right)...)
		}
	}
	return ret
}

// @lc code=end
